Note: this text prompt is re-made from the interactive, use as reference only.

USER TASK SPECIFICATION:

Create an interactive HTML5 **“Animal Classification Assessment”** where students drag and drop animals into the correct vertebrate/invertebrate groups based on their characteristics.

TARGET AUDIENCE:
- Primary 4–5 Science (approx. ages 10–11)

INTERACTIVE REQUIREMENTS:
- Focus on **animal classification** by major groups:
  - Mammals
  - Birds
  - Reptiles
  - Amphibians
  - Fish
  - Insects
- Learners are given a **set of animal cards** (with emoji + name) and must drag each card into the correct classification box.
- Support **mouse-based drag-and-drop** (desktop) and **touch drag** (mobile/tablet).
- Provide **instant formative feedback** when a card is dropped:
  - Correct placements highlighted positively.
  - Incorrect placements get hints about the correct group characteristics.
- Include a **progress bar** showing how many animals have been placed out of the total (0–100% complete).
- Include assessment controls:
  - **Submit Answer** button (enabled only when all animals are placed).
  - **Try Again** button to reset and allow students to reattempt.
- Include a **Help/Examples** modal explaining each animal group with sample animals.
- Provide a **results section** showing score (e.g., 10/12 correct) and an encouragement message based on performance.
- Self-contained front-end (HTML, CSS, JavaScript) with no external frameworks required.
- **MOBILE-RESPONSIVE & TOUCH-ENABLED**:
  - Responsive layout that works well on phones and tablets.
  - Touch events for dragging animal cards to classification boxes.

SPECIFIC REQUIREMENTS:

Animal cards
- Include at least the following animals (exact set can be adapted, but should cover all groups):
  - **Mammals**: Dog, Cat
  - **Birds**: Eagle, Penguin
  - **Reptiles**: Snake, Turtle
  - **Amphibians**: Frog, Salamander
  - **Fish**: Fish, Shark
  - **Insects**: Butterfly, Bee
- Each animal card should display:
  - A clear **emoji/icon** representing the animal.
  - The **animal name** (e.g., “Shark”).
- Each card should carry internal data attributes or equivalent to encode the **correct group** (e.g., `data-group="mammals"`).

Classification boxes
- Create six classification boxes, one for each group:
  - Mammals
  - Birds
  - Reptiles
  - Amphibians
  - Fish
  - Insects
- Each classification box should contain:
  - A small **icon/emoji** representing the group (e.g., 🐄 for mammals, 🐦 for birds).
  - A **group label** (e.g., “Mammals”).
  - An inner **drop zone** where animal cards can be dropped.
- Each box should have a **tooltip or title** describing group characteristics, for example:
  - Mammals: warm-blooded, have hair/fur, feed milk to babies.
  - Birds: feathers, wings, lay eggs.
  - Reptiles: scales, cold-blooded, lay eggs on land.
  - Amphibians: live in water and on land, smooth moist skin.
  - Fish: live in water, gills, scales.
  - Insects: six legs, three body parts, often wings.

Drag-and-drop / touch interaction
- Desktop drag-and-drop:
  - Animal cards are draggable.
  - Drop zones accept cards.
  - Visual feedback when a card is dragged over a valid drop zone (e.g., highlight border or background of that box).
- Touch interaction (mobile/tablet):
  - Press and drag an animal card with touch.
  - Card follows the finger.
  - When released over a drop zone, the card snaps into that zone.
  - Reset positioning if not dropped over any valid zone.
- When a card is dropped in a drop zone:
  - Remove any previous placement for that animal (i.e., moving between boxes is allowed before submission).
  - Store the mapping from animal to the currently chosen group.

Feedback and hints
- Immediate feedback after each drop **before submission**:
  - If the animal is placed in the correct group:
    - Add a `correct` visual style (e.g., green border / background).
    - Optionally show a small tooltip like “Correct! Well done!”.
  - If placed incorrectly:
    - Add an `incorrect` visual style (e.g., red border).
    - Show a brief hint that gently guides the student, e.g.:
      - Mammals: “Think about animals that have fur and feed milk to their babies.”
      - Birds: “Think about animals that have feathers and wings.”
      - Reptiles: “Think about animals that have scales and are cold-blooded.”
      - Amphibians: “Think about animals that can live both in water and on land.”
      - Fish: “Think about animals that live in water and breathe through gills.”
      - Insects: “Think about animals that have 6 legs and 3 body parts.”
- Tooltips should appear near the card and disappear automatically after a short time (e.g., 2 seconds).

Progress tracking
- Maintain a data structure (`placedAnimals` or similar) mapping animal name → chosen group.
- **Progress bar** at the top:
  - Shows the percentage of animals that have been placed in any group (not necessarily correct).
  - Label such as “0% Complete”, “50% Complete”, etc.
- Update the progress bar **whenever** an animal is placed or moved.

Submit and scoring
- **Submit Answer** button:
  - Disabled until all animals have been placed in some box.
  - On click:
    - Lock the assessment (prevent further dragging).
    - Calculate number correct (matching chosen group to the encoded correct group).
    - Compute score and percentage (e.g., 10/12 → 83%).
- **Results section** (initially hidden):
  - Show score summary like: `You got X out of Y correct! (Z%)`.
  - Show **encouragement message** varying with performance:
    - ≥ 90%: “Excellent work! You really understand animal classification!”
    - ≥ 70%: “Great effort! You have a good understanding of animal groups!”
    - ≥ 50%: “Good try! Keep learning about animal characteristics!”
    - < 50%: “Keep practicing! Every scientist learns through trying!”
  - Optionally add a simple celebration animation (e.g., subtle scaling, background highlight) on the results panel.

Retry / reset
- **Try Again** button:
  - Hidden until after submission.
  - On click:
    - Reset internal state (isSubmitted, placedAnimals, correct count).
    - Move all animals back to the original animal cards area.
    - Clear all `correct`/`incorrect` styles.
    - Clear or hide the results section.
    - Reset progress bar to 0%.
    - Optionally shuffle the order of animal cards for variety.

Help / instructional support
- **Help button** always visible (e.g., “Need Help?”):
  - Opens a **Help modal** with concise explanations and example animals for each group.
  - Use clear, student-friendly language.
  - Include at least one example per group (some may overlap with actual assessment animals).
- Modal behavior:
  - Visible as an overlay centered on the screen.
  - Close icon (×) in top-right.
  - Clicking outside the modal content (on the overlay background) closes the modal.

Visual design and responsiveness
- Clean, student-friendly UI with:
  - A main container.
  - A row/column for the animal cards.
  - A grid layout for the classification boxes.
- Use simple color coding and iconography consistent across the UI.
- Make sure text is readable on both desktop and mobile.
- Hide or reposition tooltips when window is resized to avoid misplacement.

LEARNING OUTCOMES:
- Students should be able to:
  - Identify key characteristics of major animal groups (mammals, birds, reptiles, amphibians, fish, insects).
  - Correctly classify common animals into these groups.
  - Use hints and examples to refine their understanding when they make mistakes.
- The activity should serve as a **self-marking assessment**, giving instant feedback and a final score, while remaining encouraging and low-stakes.

INTERACTION FEATURES TO INCLUDE:
- Drag-and-drop (mouse) and touch-drag (mobile) for animal cards.
- Real-time progress bar and status text.
- Tooltips/hints for incorrect attempts and confirmations for correct attempts.
- Help modal with examples and group characteristics.
- Submit/score screen with encouragement messages.
- Try-again/reset flow resetting the whole assessment.

Create a complete, functional HTML5 interactive that meets all requirements above.
